package com.run2code.log.handler;

/**
 * 用于创建自定义函数的接口
 * 关注公众号【奔跑的码畜】，一起进步不迷路
 *
 * @author 第七人格
 * @date 2023/10/13
 */
public interface ICustomFunctionService {

    /**
     * true：前置函数，false：后置函数
     *
     * 该拓展点主要是为了解决取数时机问题，比如：
     * 有些数据在目标方法执行之前就可以拿到，那么自定义函数这个值就应该为true
     * 有些数据要目标方法执行之后才能拿得到，那么自定义函数这个值就应该为false
     *
     * @return 是否执行前的函数
     */
    boolean executeBefore();

    /**
     * 获取自定义函数名称
     *
     * @return 自定义函数名
     */
    String functionName();

    /**
     * 应用自定义函数
     *
     * @param param 参数
     * @return 执行结果
     */
    String apply(Object param);
}
